package com.baoyouqun.domain.VO;

import com.baoyouqun.domain.Enum.SystemConfigType;
import com.baoyouqun.entity.SystemConfig;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
public class AddFriendDTO {

    private String id;

    @ApiModelProperty(value = "添加好友配置（all/baoZhiHao/vip）")
    private String verifyType;

    @ApiModelProperty(value = "每日添加好友上限是否限制")
    private Boolean enableLimit;

    @ApiModelProperty(value = "每日添加上限值")
    private Long dailyLimit;

    /**
     * 从SystemConfig转换（按类型匹配）
     */
    public static AddFriendDTO fromSystemConfig(SystemConfig systemConfig) {
        if (systemConfig == null || !SystemConfigType.ADD_FRIEND.equals(systemConfig.getConfigType())) {
            throw new IllegalArgumentException("无效的添加好友配置数据");
        }

        AddFriendDTO dto = new AddFriendDTO();
        dto.setId(systemConfig.getId());
        // String -> String
        dto.setVerifyType(systemConfig.getInfo8()); // info8是String
        // Boolean -> Boolean
        dto.setEnableLimit(systemConfig.getInfo1()); // info1是Boolean
        // Integer -> Integer
        dto.setDailyLimit(systemConfig.getInfo3()); // info3是Integer
        return dto;
    }

    /**
     * 转换为SystemConfig
     */
    public SystemConfig toSystemConfig(SystemConfig config) {
        config.setId(id);

        config.setConfigType(SystemConfigType.ADD_FRIEND);
        config.setConfigName(SystemConfigType.ADD_FRIEND.getDesc());

        // String类型匹配info8
        config.setInfo8(this.verifyType); // 验证类型（String → info8）

        // Boolean类型匹配info1
        config.setInfo1(this.enableLimit); // 是否限制每日上限（Boolean → info1）

        // Integer类型匹配info3
        config.setInfo3(this.dailyLimit); // 每日上限值（Integer → info3）

        return config;
    }
}